<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
    <#assign keyai=false />
    <#if enableCache>
        <!-- 开启二级缓存 -->
        <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
    </#if>
    <#if baseResultMap>
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
            <#list table.fields as field>
                <#if field.keyFlag><#--生成主键排在第一位-->
                    <#if field.keyIdentityFlag>
                        <#assign keyai=true />
                    </#if>
                    <id column="${field.name}" property="${field.propertyName}"/>
                </#if>
            </#list>
            <#list table.commonFields as field><#--生成公共字段 -->
                <result column="${field.name}" property="${field.propertyName}"/>
            </#list>
            <#list table.fields as field>
                <#if !field.keyFlag><#--生成普通字段 -->
                    <result column="${field.name}" property="${field.propertyName}"/>
                </#if>
            </#list>
        </resultMap>
    </#if>
    <#if baseColumnList>
        <!-- 通用查询结果列 -->
        <sql id="Base_Column_List">
            <#list table.commonFields as field>
                ${field.columnName},
            </#list>
            ${table.fieldNames}
        </sql>

    </#if>

    <select id="select${table.entityName}List" resultMap="BaseResultMap" parameterType="${package.Entity}.${entity}">
        SELECT * FROM ${table.name}
        <where>
            is_delete = 0
            <#list table.fields as field>
                <#if field.columnType.type == "String"><#--生成普通字段 -->
                    <if test="${field.propertyName} != null and ${field.propertyName} != ''">
                        AND ${field.name} = #\{ ${field.propertyName} }
                    </if>
                <#else>
                    <if test="${field.propertyName} != null">
                        AND ${field.name} = #\{ ${field.propertyName} }
                    </if>
                </#if>
            </#list>
        </where>
        ORDER BY gmt_create DESC
    </select>
    <update id="delete${table.entityName}">
        UPDATE ${table.name}
        <set>
            is_delete = 1, gmt_modified = NOW()
            <if test="operatorId != null">
                , operator_id = #\{ operatorId }
            </if>
        </set>
        WHERE id IN
        <foreach collection="ids" item="id" open="(" separator="," close=")" index="index">
            #\{ id }
        </foreach>
    </update>
    <#if keyai>
        <!-- 新增返回ID -->
        <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="id"
                parameterType="${package.Entity}.${entity}">
            INSERT INTO ${table.name}
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <#list table.fields as field>
                    <#if !field.keyFlag>
                        <#if field.columnType.type == "String"><#--生成普通字段 -->
                            <if test="${field.propertyName} != null and ${field.propertyName} != ''">
                                ${field.name},
                            </if>
                        <#else>
                            <if test="${field.propertyName} != null">
                                ${field.name},
                            </if>
                        </#if>
                    </#if>
                </#list>
            </trim>
            values
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <#list table.fields as field>
                    <#if !field.keyFlag>
                        <#if field.columnType.type == "String"><#--生成普通字段 -->
                            <if test="${field.propertyName} != null and ${field.propertyName} != ''">
                                #\{ ${field.propertyName} },
                            </if>
                        <#else>
                            <if test="${field.propertyName} != null">
                                #\{ ${field.propertyName} },
                            </if>
                        </#if>
                    </#if>
                </#list>
            </trim>
        </insert>
    </#if>
    <!-- 新增列表 -->
    <insert id="saveList" parameterType="list">
        <foreach collection="listData" item="one" separator=";">
            INSERT INTO ${table.name}
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <#list table.fields as field>
                    <#if !field.keyFlag>
                        <#if field.columnType.type == "String"><#--生成普通字段 -->
                            <if test="one.${field.propertyName} != null and one.${field.propertyName} != ''">
                                ${field.name},
                            </if>
                        <#else>
                            <if test="one.${field.propertyName} != null">
                                ${field.name},
                            </if>
                        </#if>
                    <#else>
                        <#if !keyai>
                            ${field.name},
                        </#if>
                    </#if>
                </#list>
            </trim>
            values
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <#list table.fields as field>
                    <#if !field.keyFlag>
                        <#if field.columnType.type == "String"><#--生成普通字段 -->
                            <if test="one.${field.propertyName} != null and one.${field.propertyName} != ''">
                                #\{ one.${field.propertyName} },
                            </if>
                        <#else>
                            <if test="one.${field.propertyName} != null">
                                #\{ one.${field.propertyName} },
                            </if>
                        </#if>
                    <#else>
                        <#if !keyai>
                            #\{ one.${field.name} },
                        </#if>
                    </#if>
                </#list>
            </trim>
        </foreach>
    </insert>
</mapper>
